// 版权归 Epic Games, Inc. 所有。保留所有权利。

#include "LyraWidgetFactory_Class.h"

#include "Blueprint/UserWidget.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraWidgetFactory_Class)

/**
 * 为数据查找控件类实现
 * @param Data 数据对象
 * @return 控件类
 */
TSubclassOf<UUserWidget> ULyraWidgetFactory_Class::FindWidgetClassForData_Implementation(const UObject* Data) const
{
	// 从当前类开始，向后查找是否有此类的构造规则。
	for (UClass* Class = Data->GetClass(); Class; Class = Class->GetSuperClass())
	{
		TSoftClassPtr<UObject> ClassPtr(Class); // 创建软类指针
		// 查找映射中的控件类
		if (const TSubclassOf<UUserWidget> EntryWidgetClassPtr = EntryWidgetForClass.FindRef(ClassPtr))
		{
			return EntryWidgetClassPtr; // 返回找到的控件类
		}
	}

	return TSubclassOf<UUserWidget>(); // 返回空控件类
}